<?php
  # Classes de Modelo e PHPMailer
    
    require_once( CLASS_REQUIRE_INDEX );
    require_once( MODEL_DIR . "CadastroModel.class.php" );
    require_once( CLASS_FUNCTIONS );    
    require_once( CLASS_EMAIL );    
    require_once( "tools/class/SessionController.class.php" ); 
    

class AutenticarController extends IndexController{
        
        
    public function __construct(){
        parent::__construct();            
        $this->cadastro = new CadastroModel();
        $this->session = new SessionController();
    }
    
    public function defaultAction(){                    
        echo "eric";
        #header("location: $base_root");                        
        
    }          
        
    public function Usuario(){

        $usuario = parent::validate_php(parent::get_param("email_form"), 'string');
        $senha = parent::validate_php(parent::get_param("senha_form"),'string');
        $cad_array = $this->cadastro->cad_check_login($usuario,$senha);
        
        $hora_liberar = $this->session->resgata_session('liberar_tentativa');
        $hora = date("His");
        
        if( (isset($hora_liberar)) && ($hora < $hora_liberar) ):
        
            $arr["resposta"] = "excesso_de_tentativas";
            echo json_encode($arr);
            $this->session->add_value_session('erros_login',0); 
            exit;
        else:
            $this->session->remove_session("liberar_tentativa");
        endif;
        
        if(isset($cad_array[0]['id']) ):
          
          $bd_id_user = $cad_array[0]['id'];
          $bd_nome_user = $cad_array[0]['nome'];
          $bd_email_user = $cad_array[0]['login'];
          
          $this->session->add_value_session('trix_auth_pk',$bd_id_user);  
          $this->session->add_value_session('trix_auth_name',$bd_nome_user);  
          $this->session->add_value_session('trix_auth_email',$bd_email_user);  
          
          # checkpoint de sess?o
          $checkpoint = md5("trix_hotsite".$bd_email_user);
          $this->session->add_value_session('trix_check',$checkpoint); 
          
          $this->session->add_value_session('erros_login',"0"); 
          $arr["resposta"] = "ok";
          echo json_encode($arr);
        
        else:
            $erros = $this->session->resgata_session('erros_login');
            
            if( (isset($erros)) && ($erros != 0) ):
                $total = (int)$this->session->resgata_session('erros_login');
                $novo = $total+1;
                
                # adicionando total de tentativas para check de flood
                $r = $this->session->add_value_session('erros_login',$novo);  
                
                    if($r > 5):
                        $hora_liberar = date("His",strtotime("+5 minutes"));
                        $this->session->add_value_session('liberar_tentativa',$hora_liberar);  
                        $arr["resposta"] = "excesso_de_tentativas";
                    else:
                        $arr["resposta"] = "erro";
                    endif;
                
             else:
                    $this->session->add_value_session('erros_login',"1");  
                    $arr["resposta"] = "erro";
             endif;
            
            
            echo json_encode($arr);
            
        endif;
        
    }
    
    public function Logout(){
        
        $this->session->remove_session("trix_auth_pk");
        $this->session->remove_session("trix_auth_name");
        $this->session->remove_session("trix_auth_email");
        $this->session->remove_session("trix_check");
        $this->session->remove_session("erros_login");
        $this->session->remove_session("liberar_tentativa");            
        $this->session->destroySession();
        
        $arr["resposta"] = "logout_ok";
        echo json_encode($arr);
    } 
    
    public function get_erros_login(){
        echo $this->session->resgata_session('erros_login');
    }
    
    public function CheckUser(){
        
        $usuario_checkpoint = $this->session->resgata_session("trix_check");
        $usuario_session_email = $this->session->resgata_session("trix_auth_email");
        $usuario_session_pk = $this->session->resgata_session("trix_auth_pk");
        $checkpoint = md5("trix_hotsite".$usuario_session_email);

        if( ($checkpoint == $usuario_checkpoint) && (isset($usuario_session_pk)) && ( $usuario_session_pk != 0) ):
            $arr["resposta"] = "usuario_autenticado";
            echo json_encode($arr);
        else:
            $arr["resposta"] = "usuario_nao_autenticado";
            echo json_encode($arr);
        endif;
    }
    
    public function check_point_usuario(){
            $usuario_session_pk = $this->login->resgata_session("trix_auth_pk");
            $usuario_session_email = $this->login->resgata_session("trix_auth_email");
            $usuario_checkpoint = $this->login->resgata_session("trix_check");
            
            #checkpoint
            $checkpoint = md5("trix_hotsite".$usuario_session_email);
            if( ($checkpoint == $usuario_checkpoint) && (isset($usuario_session_pk)) && ( $usuario_session_pk != 0) ):
                return true;
            else:
                return false;
            endif;
    }
    
    
     public function check_user(){
        
        $usuario_checkpoint = $this->session->resgata_session("trix_check");
        $usuario_session_email = $this->session->resgata_session("trix_auth_email");
        $usuario_session_pk = $this->session->resgata_session("trix_auth_pk");
        $checkpoint = md5("trix_hotsite".$usuario_session_email);

        if( ($checkpoint == $usuario_checkpoint) && (isset($usuario_session_pk)) && ( $usuario_session_pk != 0) ):
            return true;
        else:
            return false;
        endif;
        
        
    }
        
        
    
        
    
    }            
            
            
            
?>
